#!/usr/bin/env python

##  flamingo - 2D Game Engine
##  Copyright (C) 2009 Bradley Zeis
##
##  This program is free software: you can redistribute it and/or modify
##  it under the terms of the GNU General Public License as published by
##  the Free Software Foundation, either version 3 of the License, or
##  (at your option) any later version.
##
##  This program is distributed in the hope that it will be useful,
##  but WITHOUT ANY WARRANTY; without even the implied warranty of
##  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
##  GNU General Public License for more details.
##
##  You should have received a copy of the GNU General Public License
##  along with this program.  If not, see <http://www.gnu.org/licenses/>.
##
##  Bradley Zeis
##  flamingoengine@gmail.com

"""Abstract Classes for defining an audio mixer."""

import abc

##-------- Classes
class Sound(object):
    __metaclass__ = abc.ABCMeta

    def __init__(self, filename=None, data=None):
        pass

    @abc.abstractmethod
    def play(self, channel=0, volume=1.0, offset=0, fadein=0, envelope=None, loops=0):
        pass

class StreamingSound(object):
    __metaclass__ = abc.ABCMeta

    def __init__(self, filename=None):
        pass

    @abc.abstractmethod
    def play(self, channel=0, volume=1.0, offset=0, fadein=0, envelope=None, loops=0):
        pass

class Channel(object):
    __metaclass__ = abc.ABCMeta

class Mixer(object):
    __metaclass__ = abc.ABCMeta

    @abc.abstractmethod
    def tick(self):
        pass
